// 数学计算, 可靠的基础函数
const BigNumber = require('bignumber.js');

module.exports = {
  // 加法, 可计算30位以上
  // 参数: 数字,字符串,16进制都可以(需要加0x前缀), 科学计数法(有bug,不建议使用); 建议统一使用十进制字符串进行计算;
  // 返回值: 十进制的绝对值字符串
  basAdd(a, b) {
    a = new BigNumber(a);
    b = new BigNumber(b);
    const res = a.plus(b);
    // 返回绝对值字符串
    return res.toFixed();
  },

  // 减法
  basSub(a, b) {
    a = new BigNumber(a);
    const res = a.minus(b);
    return res.toFixed();
  },

  // 乘法
  basMul(a, b) {
    a = new BigNumber(a);
    const res = a.multipliedBy(b);
    return res.toFixed();
  },

  // 除法
  basDiv(a, b) {
    a = new BigNumber(a);
    const res = a.dividedBy(b);
    return res.toFixed();
  },

  // 幂a.pow
  basPow(a, b) {
    a = new BigNumber(a);
    const res = a.pow(b);
    return res.toFixed();
  },

  // 比较大小; gte=是否大于等于, gt=是否大于, eq=是否相等, lt=是否小于, lte=是否小于等于
  // 参数: 统一使用十进制的字符串,
  // 返回值: 布尔类型
  basGte(a, b) {
    a = new BigNumber(a);
    return a.gte(b)
  },
  basGt(a, b) {
    a = new BigNumber(a);
    return a.gt(b)
  },
  basEq(a, b) {
    a = new BigNumber(a);
    return a.eq(b)
  },
  basLt(a, b) {
    a = new BigNumber(a);
    return a.lt(b)
  },
  basLte(a, b) {
    a = new BigNumber(a);
    return a.lte(b)
  },



};

